package 分类.二分;
/*
吃香蕉的速度为自变量
因为喜欢慢慢吃,所以为搜索左边界
因为函数为递减函数，所以在处理左右边界是应该变一下
 */
public class 爱吃香蕉的珂珂 {
    public int minEatingSpeed(int[] piles, int h) {
        int left=0;
        int right=1000000;
        while (left<=right){
            int mid=(left+right)/2;
            if(f(piles,mid)<h) right=mid-1;
            else if(f(piles,mid)>h) left=mid+1;
            else right=mid-1;
        }
        return left;
    }

    /****吃香蕉所用的时间**///
    int f(int[] piles,int x){
        int hours=0;
        for(int i=0;i<piles.length;i++){
            hours+=piles[i]/x;
            if(piles[i]%x>0) hours++;
        }
        return hours;
    }
}
